#include"Buffer.h"
#include<vector>
#include<string>
#include<mysql/mysql.h>
#include<list>
using namespace std;
//解析请求协议
struct body{
   body(string key1,string value1):key(key1),value(value1){
   }
   string key;
   string value;
};

class ParseRequest{
public:
    ParseRequest();
    ~ParseRequest();
    int Processingrequest(int fd);
    int PerformActions();   //执行的操作
private:  //funtion add
    void loadmusic();  //传输音乐
    int  user_register(string nameid,string passwd,string&name);   //登录功能 返回1 用户登录成功 返回-1 数据库初始化失败 -2
    int  user_register(string nameid,string passwd,int res);
    int  RequestMusicList(string folderPath,string dir);
    int  AddLoveMusic();     //添加喜欢的音乐
    int  DelLoveMusic();     //删除喜欢英语
    int  GainUseLoveList();  //获取用户喜欢列表
private:   //处理用户请求自己的喜欢列表 和移除添加喜欢列表
    list<string> GetMusiclovelist();                //获取用户喜欢列表
    int authentication();                           //身份验证  return 1 succes  -1 error
    FILE* openfile(string filepath,string flags);   //打开文件
    int addmusic(string musicname);    //添加喜欢到歌曲
    int delmusic(string delmusicname); //删除喜欢的音乐
    string GetUserPath(string nameid,string passwd); //获取到用户文件路径
private:   //Mysql api
    void connectmysql(const char* honst = "127.0.0.1",const char* usr = "root",const char* passwd = "123456"); //连接mysql数据库
    int  mysqlinit(); 
    string Queryfield(string sql);   //查询出找到指定的字段 1个
private:
    //map<string,string>RequestBody;  //请求体
    Buffer *m_readbuffer;    
    Buffer *m_writebuffer;
    // 1.usrnameid 2.passwd 3.用户请求的内容
    vector<body>RequstBody;
    int m_fd;
    MYSQL*m_mysql;  //数据库
};